/*
 * 前端核心js文件
 * */
var serverPath = "https://rimi.liangdian.online/manager/";
 serverPath = "http://localhost/manager/";
layui.config({
	base: '../static/modules/' //你存放新模块的目录，注意，不是layui的模块目录
}).extend({
	Q: 'Q', //q.js 前端路由框架
	notice: 'notice/notice' //layui 消息提示拓展样式
}).
use(['element', 'table', 'Q', 'notice', 'jquery', 'laytpl', 'layer', 'form', 'laydate','upload'], function() {
	var element = layui.element,
		table = layui.table,
		Q = layui.Q,
		notice = layui.notice,
		$ = layui.jquery,
		laytpl = layui.laytpl,
		layer = layui.layer,
		form = layui.form,
		laydate = layui.laydate,
		upload=layui.upload

	//使用Pandyle.config来设置comPath
	Pandyle.config({
		comPath: {
			index: '../static/commons/{name}.html'
		}
	});

	//注册首页
	Q.reg('index', function() {
// 		//右侧内容区域
// 		$('.layui-tab-content').vm();
	});

	//今日菜单历史
	Q.reg('todayMenuHis', function() {
		$(".layui-tab-content").attr("p-com", "index.content");
		//右侧内容区域
		$('.layui-tab-content').vm();
		//数据表格
		var dataTable = table.render({
			elem: '#content',
			cellMinWidth: 110, //全局定义常规单元格的最小宽度，layui 2.2.1 新增
			toolbar: true,
			url: serverPath + "todayMenuHis",
			page: { //分页
				layout: ['count'],
			},
			title: "导出信息",
			cols: [
				[{
					type: 'checkbox',
					fixed: 'left',
					align: 'center'
				}, {
					field: 'id',
					title: '编号',
					sort: true,
					align: 'center',
					width: 80
				}, {
					field: 'time',
					title: '日期',
					align: 'center',
					width: 180,
					templet:function(d){
						if (d.time != null) {
							var date = new Date(d.time);
							return date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate();
						}
					}
				}, {
					field: 'type',
					title: '类型',
					align: 'center',
					width: 80,
					templet:function(d){
						return d.type==1?"午餐":"晚餐";
					}
				}, {
					field: 'menuList',
					title: '菜单',
					align: 'center',
					templet: function(d){
						var names=null;
						layui.each(d.menuList, function(index, item){
							if(names!=null&&names!=''){
								names+=","+item.name;
							}else{
								names=item.name;
							}
						})
						return names;
					}
				},{fixed: 'right', title:'操作', toolbar: '#todayMenuBar', width:150}
				]
			]
		});
	});
	//今日午餐订单数量
	Q.reg('todayLunchNumber', function() {
		$(".layui-tab-content").attr("p-com", "index.content");
		//右侧内容区域
		$('.layui-tab-content').vm();
		//数据表格
		table.render({
			elem: '#content',
			cellMinWidth: 110, //全局定义常规单元格的最小宽度，layui 2.2.1 新增
			url: serverPath + "todayMenu",
			page: { //分页
				layout: ['count'],
			},
			toolbar:true,
			title: "导出信息",
			cols: [
				[{
					type: 'checkbox',
					fixed: 'left',
					align: 'center'
				}, {
					field: 'id',
					title: '编号',
					sort: true,
					align: 'center',
					width: 80
				}, {
					field: 'name',
					title: '菜名',
					align: 'center'
				}, {
					field: 'lunchNumber',
					title: '订单量',
					sort: true,
					align: 'center'
				}]
			]
		});
	});
	//今日晚餐订单
	Q.reg('todayDinnerNumber', function() {
		$(".layui-tab-content").attr("p-com", "index.content");
		//右侧内容区域
		$('.layui-tab-content').vm();
		//数据表格
		table.render({
			elem: '#content',
			cellMinWidth: 110, //全局定义常规单元格的最小宽度，layui 2.2.1 新增
			url: serverPath + "todayMenu",
			page: { //分页
				layout: ['count'],
			},
			where:{
				type:2
			},
			toolbar:true,
			title: "导出信息",
			cols: [
				[{
					type: 'checkbox',
					fixed: 'left',
					align: 'center'
				}, {
					field: 'id',
					title: '编号',
					sort: true,
					align: 'center',
					width: 80
				}, {
					field: 'name',
					title: '菜名',
					align: 'center'
				}, {
					field: 'dinnerNumber',
					title: '订单量',
					sort: true,
					align: 'center'
				}]
			]
		});
	});
	//添加今日菜单
	Q.reg('addTodayMenu', function() {
		$(".layui-tab-content").attr("p-com", "index.content");
		//右侧内容区域
		$('.layui-tab-content').vm();
		//刷新清空数据库
		layui.sessionData('todayMenuTable',null);
		//获取所有的菜单类型
		var typeList;
		$.ajax({
			type:'get',
			url:serverPath+"type",
			async:false,
			success:function(res){
				typeList=res.data;
			}
		});
		//数据表格
		var dataTable = table.render({
			elem: '#content',
			cellMinWidth: 110, //全局定义常规单元格的最小宽度，layui 2.2.1 新增
			url: serverPath + "menu",
			toolbar: '#addtoolbar',
			page: {layout: ['count']},
			title: "导出信息",
			cols: [[
				{field: 'id',title: '编号',sort: true,align: 'center',width: 80}
				,{field: 'name',title: '菜名',align: 'center'}
				,{field: 'imgUrl',title: '图片',align: 'center',event: 'showImg',style:'cursor: pointer;',templet:function(d){
					return '<img height="28" src="'+serverPath+'../images/'+d.imgUrl+'" />';
				}}
				,{field: 'praiseNumber',title: '点赞数量',sort: true,align: 'center'}
				,{field: 'monthlySale',title: '本月销量',sort: true,align: 'center'}
				,{field: 'typeId',title: '菜单类型',align: 'center',templet:function(d){
					var name='';
					layui.each(typeList,function(index,item){
						if(d.typeId==item.id){
							name=item.name;
						}
					});
					return name;
				}}
				,{fixed: 'right', title:'操作', toolbar: '#todayBar', width:150}
			]]
		});
	});
	//菜单管理
	Q.reg('menuManager',function(){
		$(".layui-tab-content").attr("p-com", "index.content");
		//右侧内容区域
		$('.layui-tab-content').vm();
		//获取所有的菜单类型
		var typeList;
		$.ajax({
			type:'get',
			url:serverPath+"type",
			async:false,
			success:function(res){
				typeList=res.data;
			}
		});
		//数据表格
		var dataTable = table.render({
			elem: '#content',
			cellMinWidth: 110, //全局定义常规单元格的最小宽度，layui 2.2.1 新增
			url: serverPath + "menu",
			toolbar: '#menuManagerToolbar',
			loading:true,
			page: {layout: ['count']},
			title: "导出信息",
// 			done:function(){
// 				//表格渲染完成，隐藏ID列
// 				$("[data-field='id']").css('display','none');
// 				$(".layui-table-tool-panel").css('display','none');
// 			},
			cols: [[
				{field: 'id',title: '编号',sort: true,align: 'center'}
				,{field: 'name',title: '菜名',align: 'center',edit: 'text'}
				,{field: 'imgUrl',title: '图片',align: 'center',event: 'showImg',style:'cursor: pointer;',templet:function(d){
					return '<img height="28" src="'+serverPath+'../images/'+d.imgUrl+'" />';
				}}
				,{field: 'praiseNumber',title: '点赞数量',sort: true,align: 'center'}
				,{field: 'monthlySale',title: '本月销量',sort: true,align: 'center'}
				,{field: 'desc',title: '描述',align: 'center',edit: 'text'}
				,{field: 'typeId',title: '菜单类型',align: 'center',templet:function(d){
					var name='';
					layui.each(typeList,function(index,item){
						if(d.typeId==item.id){
							name=item.name;
						}
					});
					return name;
				}}
				,{field: 'upTime',title: '上架时间',align: 'center'}
				,{fixed: 'right', title:'操作', toolbar: '#menuManagerBar', width:150}
			]]
		});
	});
	//用户管理
	Q.reg('userManager', function() {
		$(".layui-tab-content").attr("p-com", "index.content");
		//右侧内容区域
		$('.layui-tab-content').vm();
		//数据表格
		table.render({
			elem: '#content',
			cellMinWidth: 110, //全局定义常规单元格的最小宽度，layui 2.2.1 新增
			url: serverPath + "user",
			page: { //分页
				layout: ['count'],
			},
			toolbar:'#UserToolbar',
			title: "导出信息",
			cols: [
				[{
					type: 'checkbox',
					fixed: 'left',
					align: 'center'
				}, {
					field: 'id',
					title: '编号',
					sort: true,
					align: 'center',
					width: 80
				}, {
					field: 'name',
					title: '姓名',
					align: 'center'
				}, {
					field: 'code',
					title: '登录名',
					align: 'center'
				}, {
					field: 'phone',
					title: '手机号',
					align: 'center'
				},{fixed: 'right', title:'操作', toolbar: '#userBar', width:150}]
			]
		});
	});
	//设置首页地址
	Q.init({
		index: 'index' /* 首页地址 */
	});

	//渲染head
	$('.layui-header').vm();
	//选项卡
	$('.layui-tab-title').vm();
	//右侧内容区域
	$('.layui-tab-content').vm();
	//使用Layui渲染左侧菜单
	$(".layui-layout-admin .left").load("../static/commons/left.html", function() {
		laytpl(left.innerHTML).render(data, function(html) {
			$('.left').html(html);
			element.render('nav');
		});
	});
	//必须加入 重新渲染菜单栏
	element.init();

	//点击左侧菜单更换hash值 切换页面
	element.on('tab(test)', function(elem) {
		location.hash = $(this).attr("href");
	});

	//头工具栏事件
	table.on('toolbar(content)', function(obj) {
		var checkStatus = table.checkStatus(obj.config.id);
		switch (obj.event) { 
			//添加菜单
			case 'addMenu':
				layer.open({
				  type: 2,
				  area: ['800px', '400px'],
				  shadeClose :true,
				  content: '../static/commons/add.html' //这里content是一个DOM，注意：最好该元素要存放在body最外层，否则可能被其它的相对元素所影响
				});
			break
			//上传用户信息 批量添加
			case 'uploadUserExcel':
				var btn=$("<input type='button'>");
				//绑定文件上传
				upload.render({
				  elem: btn
				  ,url: serverPath+'excel',
				  accept:'file',
				  exts:'xls|xlsx',
				  done: function(res, index, upload){
					//保存文件成功
					if(res.code==0){
						notice.success({
							title:'消息通知',
							message:res.msg
						})
						//重新加载表格
						table.reload('content', {
							where: null
						})
						return;
					}
					notice.error({
						title:'消息通知',
						message:res.msg
					})
				  },error:function(){
					  notice.error({
						  title:'消息通知',
						  message:'链接服务器失败!!!'
					  })
				  }
				});
				//触发文件选择框
				btn.click();
			break;
			//下载excel模板
			case 'downloadUserExcel' :
				location.href=serverPath+"excel";
			break;
			case 'query': //条件查询
				var formHtml = query.innerHTML;
				//弹出搜索条件页面用户输入后进行查询
				layer.open({
					type: 1,
					title: "请输入对应的查询条件进行搜索",
					closeBtn: 0,
					shadeClose: true,
					area: ['700px', '450px'],
					fixed: true, //固定
					content: formHtml
				});
				//日期选择
				laydate.render({
					elem: '#timeQuery',
				});
				break;
			case 'queryAll':
				//重新加载表格
				table.reload('content', {
					where: null
				})
				break;
			case 'cleanAll':
				layui.sessionData('todayMenuTable',null);
				//找到对应的按钮 将按钮启用，修改按钮名称
				$(".layui-btn-disabled").each(function(i){
						$(this).removeClass("layui-btn-disabled");
						$(this).text("加入今日菜单");
				})
				//修改购物车数量
				$(".carNumber").text(0);
			break;
			case 'todayMenuCar':
					//获取数据库中所有数据
					var menus=layui.sessionData('todayMenuTable').menus;
					if(menus==null){
						notice.error({
							title: '消息通知',
							message: '还未添加菜品'
						});
						return;
					}
					var names='';
					for (var i = 0; i < menus.length; i++) {
						var menuName=menus[i].menuName;  
						names+="<div class='layui-card-header'>"+menuName+"<i class='layui-icon layui-icon-close layui-layout-right deleteMenu' menuId='"+menus[i].id+"'></i></div>";
					}
					layer.open({
						title:'今日菜单列表',
						area: ['300px', '600px'],
						btn: ['确定今日午餐','确定今日晚餐'],
						btnAlign: 'c',
						shadeClose:true,
						content:names,
						yes:function(index){
							var menuList=layui.sessionData('todayMenuTable').menus;
							if(menuList==null||menuList==''){
								notice.error({
									title: '消息通知',
									message: '请添加菜品到今日菜单'
								});
								layer.close(index);
								return;
							}
							//获取所有选择菜品ID
							var ids='';
							for (var i = 0; i < menuList.length; i++) {
								if(ids!=''&&ids!=null){
									ids+=','+menuList[i].id
								}else{
									ids=menuList[i].id;
								}
							}
							$.ajax({
								type:'post',
								url:serverPath+"todayMenu",
								data:{menuIds:ids},
								success:function(res){
									if(res.code==0){
										notice.success({
											title: '消息通知',
											message: res.msg
										});
										layui.sessionData('todayMenuTable',null);
										//修改购物车数量
										$(".carNumber").text(0);
										return;
									}
									notice.error({
										title: '消息通知',
										message: res.msg
									});
									 layer.close(index);
								},
								error:function(){
									notice.error({
										title: '消息通知',
										message: '访问服务器失败,请刷新重试！！'
									});
								}
							})
							layer.close(index);
						},
						btn2:function(){
							var menuList=layui.sessionData('todayMenuTable').menus;
							if(menuList==null||menuList==''){
								notice.error({
									title: '消息通知',
									message: '请添加菜品到今日菜单'
								});
								return true;
							}
							//获取所有选择菜品ID
							var ids='';
							for (var i = 0; i < menuList.length; i++) {
								if(ids!=''&&ids!=null){
									ids+=','+menuList[i].id
								}else{
									ids=menuList[i].id;
								}
							}
							$.ajax({
								type:'post',
								url:serverPath+"todayMenu",
								data:{menuIds:ids,type:2},
								success:function(res){
									if(res.code==0){
										notice.success({
											title: '消息通知',
											message: res.msg
										});
										layui.sessionData('todayMenuTable',null);
										//修改购物车数量
										$(".carNumber").text(0);
										return true;
									}
									notice.error({
										title: '消息通知',
										message: res.msg
									});
									return true;
								},
								error:function(){
									notice.error({
										title: '消息通知',
										message: '访问服务器失败,请刷新重试！！'
									});
								}
							})
							return true;
						}
					});
					//绑定删除菜单事件
					$('.deleteMenu').on("click",function(){
						//获取删除按钮对应的菜单名称
						var menuName=$(this).parent().text();
						//删除该行html元素
						$(this).parent().remove();
						var menuId=$(this).attr('menuId');
						//找到对应的按钮 将按钮启用，修改按钮名称
						$(".layui-btn-disabled").each(function(i){
							if($(this).attr("menuId")==menuId){
								$(this).removeClass("layui-btn-disabled");
								$(this).text("加入今日菜单");
							}
						})
						
						//获取数据库中的数据
						var menuList=layui.sessionData('todayMenuTable').menus;
						//遍历 比较
						for (var i = 0; i < menuList.length; i++) {
							if(menuList[i]!=null&&menuName==menuList[i].menuName){
								 menuList.splice(i, 1);
								break;
							}
						}
						//重新添加到缓存中
						layui.sessionData('todayMenuTable', {
							key: 'menus'
							,value: menuList
						});
						//修改数量
						$(".carNumber").text(menuList.length);
					});
			break;
		};
	});
	
	//绑定表单提交事件
	form.on('submit(query22)', function(data) {
		//重新加载表格
		table.reload('content', {
			where: data.field
		})
		layer.closeAll('page');
		//关闭搜索窗口
		return false;
	});

	//监听单元格编辑
	table.on('edit(content)', function(obj){
		var value = obj.value //得到修改后的值
		,data = obj.data //得到所在行所有键值
		,field = obj.field; //得到字段
		
		if(value==null||value==''){
			notice.error({
				title: '消息通知',
				message: '请填写数据'
			});
			table.reload('content', {})
			return;
		}
		
		layer.confirm('是否更改为：'+ value,function(index){
			$.ajax({
			    type: "POST",
			    url: serverPath+"menu",
			    data: "_method=PUT&id="+data.id+"&"+field+"="+value,
			    success: function(res){
			        if(res.code==0){
						notice.success({
							title: '消息通知',
							message: res.msg
						});
						return;
					}
					notice.error({
						title: '消息通知',
						message: res.msg
					})
					table.reload('content', {})
			    },error:function(){
					notice.error({
						title: '消息通知',
						message: "访问服务器失败，请检查网络！！"
					})
				}
			});
			layer.close(index);
		},function(){
			table.reload('content', {})
		});
	  });

	//监听行工具事件
	table.on('tool(content)', function(obj) {
		var data = obj.data;
		//console.log(obj)
		if (obj.event === 'todayMenuDel') {
			layer.confirm('确认删除今日菜单?', function(index) {
				$.ajax({
				    type: "POST",
				    url: serverPath+"todayMenu",
				    data: {_method:'DELETE',id:data.id},
				    success: function(res){
				        if(res.code==0){
							notice.success({
								title: '消息通知',
								message: res.msg
							});
							obj.del();
							return;
						}
						notice.error({
							title: '消息通知',
							message: res.msg
						})
				    }
				});
				layer.close(index);
			});
		} else if(obj.event==='deleteUser'){
				//删除菜单项
				layer.confirm("确定要删除该用户嘛?",function(index){
					$.ajax({
					    type: "POST",
					    url: serverPath+"user",
					    data: {_method:'DELETE',id:data.id},
					    success: function(res){
					        if(res.code==0){
								obj.del();
								notice.success({
									title: '消息通知',
									message: res.msg
								});
								//重新加载表格
								table.reload('content', {
									where: null
								})
								return;
							}
							notice.error({
								title: '消息通知',
								message: res.msg
							})
					    }
					});
					layer.close(index);
				})
		}else if (obj.event === 'edit') {
			alert("修改");
		} else if (obj.event === 'addTodauMenu') {
			//$(this).text("已加入今日菜单");
			//$(this).addClass("layui-btn-disabled");
			//获取数据库中所有数据
			var menus=layui.sessionData('todayMenuTable').menus;
			//
			if(menus==null){
				var menus=new Array();
			}
			var isok=true;
			//遍历检查该菜单是否添加过
			for (var i = 0; i < menus.length; i++) {
				if(menus[i]!=null&&menus[i].menuName==data.name){
					isok=false;
// 					notice.error({
// 						title: '消息通知',
// 						message: '该菜品已添加到今日菜单'
// 					});
					break;
				}
			}
			if(isok){
				var obj=new Object();
				obj.menuName=data.name;
				obj.id=data.id;
				menus.push(obj);
				
				$(this).text("已加入今日菜单");
				$(this).attr("menuId",data.id);
				$(this).addClass("layui-btn-disabled");
				/* notice.success({
					title: '消息通知',
					message: data.name+'添加到今日菜单成功'
				}); */
				//将该菜品存储到缓存中
				layui.sessionData('todayMenuTable', {
				  key: 'menus'
				  ,value: menus
				});
				//修改购物车数量
				$(".carNumber").text(menus.length);
			}
		}else if(obj.event === 'showImg'){
			//查看图片
			if(data.imgUrl==null){
				notice.error({
					title:'消息通知',
					message:'无图片可以显示'
				});
			}
				//弹出图片
				layer.open({
				  type: 1,
				  title: false,
				  closeBtn: 0,
				  area: ['500px', '400px'],
				  skin: 'layui-layer-nobg', //没有背景色
				  shadeClose: true,
				  content: '<img width="500" height="400" src="'+serverPath+'../images/'+data.imgUrl+'" />'
				});
			
		}else if(obj.event === 'updateImg'){
			var btn=$("<input type='button'>");
			//绑定文件上传
			upload.render({
			  elem: btn
			  ,url: serverPath+'upload',
			  accept:'images',
			  acceptMime: 'image/*',
			  data:{
				  id:obj.data.id
			  },
			  done: function(res, index, upload){
				//保存文件成功
				if(res.code==0){
					$.ajax({
					    type: "POST",
					    url: serverPath+"menu",
					    data: "_method=PUT&id="+data.id+"&imgUrl="+res.data.fileName,
					    success: function(res){
					        if(res.code==0){
								notice.success({
									title: '消息通知',
									message: "菜品图片修改成功"
								});
								return;
							}
							notice.error({
								title: '消息通知',
								message: '图片信息修改失败'
							})
					    },error:function(){
							notice.error({
								title: '消息通知',
								message: "访问服务器失败，请检查网络！！"
							})
						}
					});
					//修改img图片路径
					obj.update({imgUrl:res.data.fileName});
					return;
				}
				notice.error({
					title:'消息通知',
					message:res.msg
				})
			  },error:function(){
				  notice.error({
					  title:'消息通知',
					  message:'上传服务器失败!!!'
				  })
			  }
			});
			//触发文件选择框
			btn.click();
		}else if(obj.event === 'deleteMenu'){
			//删除菜单项
			layer.confirm("确定要删除该菜单嘛?",function(index){
				$.ajax({
				    type: "POST",
				    url: serverPath+"menu",
				    data: {_method:'DELETE',id:data.id},
				    success: function(res){
				        if(res.code==0){
							obj.del();
							notice.success({
								title: '消息通知',
								message: res.msg
							});
							return;
						}
						notice.error({
							title: '消息通知',
							message: res.msg
						})
				    }
				});
				layer.close(index);
			})
		}
	});
	//监听单选按钮菜品类型切换事件
	form.on('radio(radioType)', function(data){
		//重新加载表格
		table.reload('content', {
			where: {type:data.value}  //被点击的radio的value值
		})
	});  

	//左侧菜单数据
	var data = {
		menus: [{
				name: "今日菜单",
				subMenus: [{
					name: "添加",
					href: "addTodayMenu"
				}, {
					name: "管理",
					href: "todayMenuHis"
				}, {
					name: "午餐预约数量",
					href: "todayLunchNumber"
				}, {
					name: "晚餐预约数量",
					href: "todayDinnerNumber"
				}]
			},
			{
				name: "菜单管理",
				href: "menuManager"
			},
			{
				name:"用户管理",
				href:"userManager"
			}
		]
	}
	//是否显示footer 页面切换
	$(".layui-footer").on("click", function() {
		$(".layui-footer").slideToggle("slow");
	})

	//添加选项卡//渲染选项卡后绑定点击事件
	// 	$(document).on("click", '.addCard', function() {
	// 		element.tabAdd('test', {
	// 			title: '新选项' + (Math.random() * 1000 | 0) //用于演示
	// 				,
	// 			id: new Date().getTime() //实际使用一般是规定好的id，这里以时间戳模拟下
	// 		})
	// 	});
});
